package t327.controller;

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.ocr.v20181119.OcrClient;
import com.tencentcloudapi.ocr.v20181119.models.LicensePlateOCRRequest;
import com.tencentcloudapi.ocr.v20181119.models.LicensePlateOCRResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import t327.pojo.PlateNumberRecord;
import t327.service.iter.IPlateNumberScanService;

import java.io.IOException;
import java.util.Base64;
import java.util.List;

@Controller
@RequestMapping("plateNumberScans")
public class plateNumberScanController {

    @Autowired
    private IPlateNumberScanService iPlateNumberScanService;


    @RequestMapping("plateNumberScan")
    @ResponseBody
    public String plateNumberScan(@RequestParam("photo") MultipartFile photo) {
        try {
            // 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey，此处还需注意密钥对的保密
            // 代码泄露可能会导致 SecretId 和 SecretKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考，建议采用更安全的方式来使用密钥，请参见：https://cloud.tencent.com/document/product/1278/85305
            // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
            Credential cred = new Credential("AKIDnOkz0mSyOZUAhzwoY3IK7nGZdfS8LljS", "e3PWO1PfiW5buxlJjvz8HSUKuBF8oHVU");
            // 实例化一个http选项，可选的，没有特殊需求可以跳过
            HttpProfile httpProfile = new HttpProfile();

            // 实例化一个client选项，可选的，没有特殊需求可以跳过
            ClientProfile clientProfile = new ClientProfile();

            clientProfile.setHttpProfile(httpProfile);
            // 实例化要请求产品的client对象,clientProfile是可选的
            OcrClient client = new OcrClient(cred, "ap-shanghai", clientProfile);
            // 实例化一个请求对象,每个接口都会对应一个request对象
            LicensePlateOCRRequest req = new LicensePlateOCRRequest();

            String base64Photo = Base64.getEncoder().encodeToString(photo.getBytes());
            req.setImageBase64(base64Photo);

            // 返回的resp是一个LicensePlateOCRResponse的实例，与请求对象对应
            LicensePlateOCRResponse resp = client.LicensePlateOCR(req);
            // 输出json格式的字符串回包

            System.out.println(LicensePlateOCRResponse.toJsonString(resp));
            return resp.getNumber();
        } catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "请求未知错误";
    }



    @RequestMapping("queryPlateNumberScan")
    @ResponseBody
    public List<PlateNumberRecord> queryPlateNumberScan(String plateNumber){
        return iPlateNumberScanService.getqueryPlateNumberRecord(plateNumber);
    }


    @RequestMapping("addPlateNumberScan")
    @ResponseBody
    public String addPlateNumberScan(PlateNumberRecord plateNumberRecord) {

        boolean success = iPlateNumberScanService.addPlateNumberRecord(plateNumberRecord);

        if (success) {
            return "车辆添加成功";
        } else {
            return "车辆添加失败";
        }
    }


//        // 根据车牌号查询数据库，判断车辆是否已经存在
//        PlateNumberRecord plateNumberRecord = iPlateNumberScanService.getqueryPlateNumberRecord(plateNumber);
//
//        if (plateNumberRecord == null) {
//            // 第一次进入
//            // 执行相应的操作，如添加车辆信息到数据库
//            iPlateNumberScanService.addPlateNumberRecord(new PlateNumberRecord(plateNumber));
//            return "新进入";
//        } else {
//            // 二次进入
//            // 执行相应的操作
//            return "二次进入";
//        }
//    }

    }
